package game.entidades;

import java.awt.Graphics2D;

/**
 * Representa qualquer objeto pertencente ao jogo.
 * @author LeandroBeni e DeboraGonçalves
 */
abstract public class Elemento {

    private float x;
    private float y;
    private float velocidadeX;
    private float velocidadeY;
    /**
     * Construtor que inicializa os atributos da classe.
     * @param x posição no eixo x.
     * @param y posição no eixo y.
     * @param velocidadeX velocidade que a criatura se move no eixo x.
     * @param velocidadeY velocidade que a criatura se move no eixo y.
     */
    public Elemento(float x, float y, float velocidadeX, float velocidadeY){
        this.x = x;
        this.y = y;
        this.velocidadeX = velocidadeX;
        this.velocidadeY = velocidadeY;
    }

    public void update(Long elapsedTime){
        
    }


    abstract public void draw(Graphics2D g);

    
    /**
     * Retorna a posição no eixo x do elemento.
     * @return posição no eixo x.
     */
    public float getX() {
        return x;
    }
    /**
     * Modifica a posição do eixo x.
     * @param x nova posição no eixo x.
     */
    public void setX(float x) {
        this.x = x;
    }
    /**
     * Retorna a posição no eixo y do elemento.
     * @return posição no eixo y.
     */
    public float getY() {
        return y;
    }
    /**
     * Modifica a posição do eixo y.
     * @param y nova posição no eixo y.
     */
    public void setY(float y) {
        this.y = y;
    }
    /**
     * Retorna a velocidade no eixo x do elemento.
     * @return velocidade no eixo x.
     */
    public float getVelocidadeX() {
        return velocidadeX;
    }
    /**
     * Modifica a velocidade no eixo x do elemento.
     * @param velocidadeX nova posição no eixo x.
     */
    public void setVelocidadeX(float velocidadeX) {
        this.velocidadeX = velocidadeX;
    }
    /**
     * Retorna a velocidade no eixo y do elemento.
     * @return velocidade no eixo y.
     */
    public float getVelocidadeY() {
        return velocidadeY;
    }
    /**
     * Modifica a velocidade no eixo y do elemento.
     * @param velocidadeY nova posição no eixo y.
     */
    public void setVelocidadeY(float velocidadeY) {
        this.velocidadeY = velocidadeY;
    }
}
